// 给你一个整数数组 nums ，数组中的元素 互不相同 。返回该数组所有可能的子集（幂集）。

// 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

// 回溯法
// 执行用时：
// 0 ms
// , 在所有 C++ 提交中击败了
// 100.00%
// 的用户
// 内存消耗：
// 7.1 MB
// , 在所有 C++ 提交中击败了
// 29.46%
// 的用户

#include<vector>
#include<string>
#include<set>
using namespace std;

class Solution {
public:
    vector<vector<int>> res;
    vector<vector<int>> subsets(vector<int>& nums) {
        vector<int> track;
        trackback(nums,0,track);
        return res;
    }
    void trackback(vector<int>& nums,int pos,vector<int>& track){
        res.push_back(track);
        for (int i = pos; i < nums.size(); i ++){
            track.push_back(nums[i]);
            trackback(nums,i+1,track);
            track.pop_back();
        }
    }
};